Embodiments relate generally to musical instrument digital interface (MIDI) controls, and, more particularly, to inferential generation of virtual MIDI controls.
Home and professional music recording and performance studios include various types of gear for controlling audio and related data. Digital audio equipment is often configured to communicate via MIDI commands, which includes both note data and control data. The control data indicates the state (e.g., value) of physical and/or virtual MIDI instrument controls, like pan, fader, etc. It is desirable to use at least one MIDI instrument (e.g., a keyboard, sequencer, etc.) to control at least one other MIDI instrument using MIDI commands. However, the ability to truly automate a MIDI instrument's controls is typically very limited.
Some very high-end MIDI instruments (e.g., for professional studios) have motorized controls that are configured for remote automation. However, this type of motorization is expensive and not available on the bulk of consumer gear. Some other MIDI instruments have dedicated software that includes preconfigured virtual controls for automating controls of the MIDI instrument using MIDI commands through MIDI ports (e.g., as plug-ins for software sequencers). However, this type of dedicated software tends to be very limited in which controls are automated and in which ways, and the software is limited only to the associated MIDI instrument. Accordingly, even limited automation of multiple MIDI instruments would involve multiple pieces of software that may not be able to be integrated.
Various commercial software products further allow users to instantiate and modify “canned” MIDI controls. For example, if a user purchases a new MIDI instrument that has 16 different MIDI controls and no dedicated software automation package, the user may be able to manually model each control. For each control, the user would instantiate a canned MIDI control (e.g., a slider or knob) and would use knowledge of the control functionality and the MIDI specification to assign all its various parameters. While this type of automation can certainly be powerful, it is typically cumbersome and error-prone, and may involve advanced knowledge of the MIDI specification.